package main

import "fmt"

// 1求n的阶乘。至少使用递归函数完成一次。
func work1(n int) int {
	if n < 0 {
		panic("不能小于1！")
	} else if n == 1 {
		return 1
	}
	return work1(n-1) * n
}

// 编写一个函数，接受一个参数n，n为正整数。要求数字必须对齐
func work2(n int) {
	l := ""
	for i := n; i >= 1; i-- {
		l += fmt.Sprintf("%d ", i)
	}
	k := len(l)
	var c string
	for i := 1; i < n; i++ {
		c = ""
		for j := i; j >= 1; j-- {
			c += fmt.Sprintf("%d ", j)
		}
		fmt.Printf("%*s\n", k, c)
	}
	fmt.Println(l)
}

func main() {
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~")
	fmt.Println("第一题：求n的阶乘。至少使用递归函数完成一次。")
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~")
	fmt.Println(work1(5))
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~")
	fmt.Println("第二题：编写一个函数，接受一个参数n，n为正整数。要求数字必须对齐")
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~")
	work2(12)
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~")
}
